package com.mdd.admin.controller.goods;

import com.mdd.admin.config.aop.Log;
import com.mdd.admin.service.unit.IGoodsUnitService;
import com.mdd.admin.validate.common.PageParam;
import com.mdd.admin.validate.unit.GoodsUnitParam;
import com.mdd.admin.vo.unit.GoodsUnitDetailVo;
import com.mdd.admin.vo.unit.GoodsUnitListVo;
import com.mdd.common.core.PageResult;
import com.mdd.common.validator.annotation.IDMust;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.Map;

/**
 * 服务单位管理
 */
@Api(tags = "服务单位管理")
@RestController
@RequestMapping("api/unit")
public class GoodsUnitController {

    @Resource
    IGoodsUnitService iGoodsUnitService;

    /**
     * 服务单位列表
     *
     * @param pageParam 分页参数
     * @param params    搜索参数
     * @return Object
     */
    @ApiOperation(value = "服务单位管理 - 分页列表")
    @GetMapping("/list")
    public PageResult<GoodsUnitListVo> list(@Validated PageParam pageParam,
                                            @RequestParam Map<String, String> params) {
        return iGoodsUnitService.list(pageParam, params);
    }

    /**
     * 服务单位详情
     *
     * @param id 主键ID
     * @return Object
     */
    @ApiOperation(value = "服务单位管理 - 服务单位详情")
    @GetMapping("/detail")
    public GoodsUnitDetailVo detail(@Validated @IDMust() @RequestParam("id") Long id) {
        return iGoodsUnitService.detail(id);
    }

    /**
     * 服务单位新增
     *
     * @param goodsUnitParam 参数
     * @return Object
     */
    @ApiOperation(value = "服务单位管理 - 服务单位新增")
    @Log(title = "服务单位新增")
    @PostMapping("/add")
    public void add(@Validated(value = GoodsUnitParam.create.class) @RequestBody GoodsUnitParam goodsUnitParam) {
        iGoodsUnitService.add(goodsUnitParam);
    }

    /**
     * 服务单位编辑
     *
     * @param goodsUnitParam 参数
     * @return Object
     */
    @ApiOperation(value = "服务单位管理 - 服务单位编辑")
    @Log(title = "服务单位编辑")
    @PostMapping("/edit")
    public void edit(@Validated(value = GoodsUnitParam.update.class) @RequestBody GoodsUnitParam goodsUnitParam) {
        iGoodsUnitService.edit(goodsUnitParam);
    }

    /**
     * 服务单位删除
     *
     * @return Object
     */
    @ApiOperation(value = "服务单位管理 - 服务单位删除")
    @Log(title = "服务单位删除")
    @GetMapping("/del")
    public void del(@RequestParam("id") Long id) {
        iGoodsUnitService.del(id);
    }

}
